{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "# 深度学习框架\n",
    "\n",
    "近年来深度学习在很多机器学习领域都有着非常出色的表现，在图像识别、语音识别、自然语言处理、机器人、网络广告投放、医学自动诊断和金融等领域有着广泛应用。面对繁多的应用场景，深度学习框架有助于建模者节省大量而繁琐的外围工作，更聚焦业务场景和模型设计本身。\n",
    "\n",
    "## 深度学习框架优势\n",
    "\n",
    "使用深度学习框架完成模型构建有如下两个优势：\n",
    "\n",
    "1. **节省编写大量底层代码的精力**：屏蔽底层实现，用户只需关注模型的逻辑结构。同时，深度学习工具简化了计算，降低了深度学习入门门槛。\n",
    "2. **省去了部署和适配环境的烦恼**：具备灵活的移植性，可将代码部署到CPU/GPU/移动端上，选择具有分布式性能的深度学习工具会使模型训练更高效。\n",
    "\n",
    "## 深度学习框架设计思路\n",
    "\n",
    "深度学习框架的本质是框架自动实现建模过程中相对通用的模块，建模者只实现模型个性化的部分，这样可以在“节省投入”和“产出强大”之间达到一个平衡。我们想象一下：假设你是一个深度学习框架的创造者，你期望让框架实现哪些功能呢？\n",
    "\n",
    "相信对神经网络模型有所了解的读者都会得出如 **表1** 所示的设计思路。在构建模型的过程中，每一步所需要完成的任务均可以拆分成个性化和通用化两个部分。\n",
    "\n",
    "* 个性化部分：往往是指定模型由哪些逻辑元素组合，由建模者完成。\n",
    "* 通用部分：聚焦这些元素的算法实现，由深度学习框架完成。\n",
    "<br></br>\n",
    "<center><img src=\"https://ai-studio-static-online.cdn.bcebos.com/a895591e0d3242a0bfa9af5b687c3ac616442685d25547b188208cbecd06ee8e\" width=\"900\" hegiht=\"\" ></center>\n",
    "<center><br>表1：深度学习框架设计示意图</br></center>\n",
    "<br></br>\n",
    "\n",
    "无论是计算机视觉任务还是自然语言处理任务，使用的深度学习模型结构都是类似的，只是在每个环节指定的实现算法不同。因此，多数情况下，算法实现只是相对有限的一些选择，如常见的Loss函数不超过十种、常用的网络配置也就十几种、常用优化算法不超过五种等等。这些特性使得基于框架建模更像一个编写“模型配置”的过程。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "# 飞桨开源深度学习平台\n",
    "\n",
    "百度出品的深度学习平台飞桨（PaddlePaddle）是主流深度学习框架中一款完全国产化的产品。2016 年飞桨正式开源，是国内首个全面开源开放、技术领先、功能完备的产业级深度学习平台。相比国内其他平台，飞桨是一个功能完整的深度学习平台，也是唯一成熟稳定、具备大规模推广条件的深度学习平台。\n",
    "\n",
    "飞桨源于产业实践，始终致力于与产业深入融合，与合作伙伴一起帮助越来越多的行业完成AI赋能。目前飞桨已广泛应用于医疗、金融、工业、农业、服务业等领域，如 **图1** 所示。此外在新冠疫情期间，飞桨积极投入各类疫情防护模型的开发，开源了业界首个口罩人脸检测及分类模型，辅助各部门进行疫情防护，通过科技让工作变得更加高效。\n",
    "\n",
    "<center><img src=\"https://ai-studio-static-online.cdn.bcebos.com/ee9964e5e6fb41c7a09a891a18a09fae691d1a70929049819342b0728fb35232\" width=\"700\" hegiht=\"\" ></center>\n",
    "<center><br>图1：飞桨在各领域的应用</br></center>\n",
    "<br></br>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## 飞桨开源深度学习平台全景\n",
    "\n",
    "飞桨（PaddlePaddle）以百度多年的深度学习技术研究和业务应用为基础，是中国首个开源开放、技术领先、功能完备的产业级深度学习平台，包括飞桨开源平台和飞桨企业版。飞桨开源平台包含核心框架、基础模型库、端到端开发套件与工具组件，持续开源核心能力，为产业、学术、科研创新提供基础底座。飞桨企业版基于飞桨开源平台，针对企业级需求增强了相应特性，包含零门槛AI开发平台EasyDL和全功能AI开发平台BML。EasyDL主要面向中小企业，提供零门槛、预置丰富网络和模型、便捷高效的开发平台；BML是为大型企业提供的功能全面、可灵活定制和被深度集成的开发平台。\n",
    "\n",
    "飞桨开源平台（以下简称“飞桨”）全景图如 **图2** 所示。\n",
    "\n",
    "<center><img src=\"https://ai-studio-static-online.cdn.bcebos.com/d4925ad66cca4fd58fedd4bbc41ea11bdb58bf95cbea4113a8a3447cb2e2bca2\" width=\"900\" ></center>\n",
    "<center><br>图2：飞桨全景图</br></center>\n",
    "<br></br>\n",
    "\n",
    "概览图上半部分是从开发、训练到部署的全流程工具，下半部分是预训练模型、各领域的开发套件和模型库等模型资源。\n",
    "\n",
    "### 框架和全流程工具\n",
    "飞桨在提供用于模型研发的基础框架外，还推出了一系列的工具组件，来支持深度学习模型从训练到部署的全流程。\n",
    "\n",
    "#### 1. 模型训练组件\n",
    "飞桨提供了**分布式训练框架FleetAPI**，还提供了开启**云上任务提交工具PaddleCloud**。同时，飞桨也支持多任务训练，可使用**多任务学习框架PALM**。\n",
    "\n",
    "#### 2. 模型部署组件\n",
    "飞桨针对不同硬件环境，提供了丰富的支持方案：\n",
    "\n",
    "* **Paddle Inference**：飞桨原生推理库，用于服务器端模型部署，支持Python、C、C++、Go等语言，将模型融入业务系统的首选。\n",
    "* **Paddle Serving**：飞桨服务化部署框架，用于云端服务化部署，可将模型作为单独的Web服务。\n",
    "* **Paddle Lite**：飞桨轻量化推理引擎，用于Mobile、IoT等场景的部署，有着广泛的硬件支持。\n",
    "* **Paddle.js**：使用JavaScript（Web）语言部署模型，用于在浏览器、小程序等环境快速部署模型。\n",
    "* **PaddleSlim**：模型压缩工具，获得更小体积的模型和更快的执行性能。\n",
    "* **X2Paddle**：飞桨模型转换工具，将其他框架模型转换成Paddle模型，转换格式后可以方便的使用上述5个工具。\n",
    "\n",
    "\n",
    "#### 3. 其他全研发流程的辅助工具\n",
    "* **AutoDL**：飞桨自动化深度学习工具，旨在自动网络结构设计，开源的AutoDL设计的图像分类网络在CIFAR10数据集正确率 达到 98%，效果优于目前已公开的10类人类专家设计的网络，居于业内领先位置。\n",
    "* **VisualDL**：飞桨可视化分析工具，以丰富的图表呈现训练参数变化趋势、模型结构、数据样本、高维数据分布、精度召回曲线等模型关键信息。帮助用户清晰直观地理解深度学习模型训练过程及模型结构，进而实现高效的模型调优、并将算法训练过程及结果分享。\n",
    "* **PaddleFL**：飞桨联邦学习框架，研究人员可以很轻松地用PaddleFL复制和比较不同的联邦学习算法，便捷地实现大规模分布式集群部署，并且提供丰富的横向和纵向联邦学习策略及其在计算机视觉、自然语言处理、推荐算法等领域的应用。此外，依靠着PaddlePaddle的大规模分布式训练和Kubernetes对训练任务的弹性调度能力，PaddleFL可以基于全栈开源软件轻松部署。\n",
    "* **PaddleX**：飞桨全流程开发工具，以低代码的形式支持开发者快速实现深度学习算法开发及产业部署。提供极简Python API和可视化界面Demo两种开发模式，可一键安装。针对CPU（OpenVINO）、GPU、树莓派等通用硬件提供完善的部署方案，并可通过RESTful API快速完成集成、再开发，开发者无需分别使用不同套件即可完成全流程模型生产部署。可视化推理界面及丰富的产业案例更为开发者提供飞桨全流程开发的最佳实践。\n",
    "\n",
    "\n",
    "\n",
    "### 模型资源\n",
    "飞桨提供了丰富的端到端开发套件、预训练模型和模型库。\n",
    "\n",
    "**PaddleHub**：飞桨预训练模型应用工具，覆盖文本、图像、视频、语音四大领域超过200个高质量预训练模型。开发者可以轻松结合实际业务场景，选用高质量预训练模型并配合Fine-tune API快速完成模型验证与应用部署工作。适用于个人开发者学习、企业POC快速验证、参加AI竞赛以及教学科研等多种业务场景。\n",
    "\n",
    "**开发套件**：针对具体的应用场景提供了全套的研发工具，例如在图像检测场景不仅提供了预训练模型，还提供了数据增强等工具。开发套件也覆盖计算机视觉、自然语言处理、语音、推荐这些主流领域，甚至还包括图神经网络和增强学习。与PaddleHub不同，开发套件可以提供一个领域极致优化（State Of The Art）的实现方案，曾有国内团队使用飞桨的开发套件拿下了国际建模竞赛的大奖。一些典型的开发套件包括：\n",
    "\n",
    "* **PaddleClas**：飞桨图像分类套件，目的是为工业界和学术界提供便捷易用的图像分类任务预训练模型和工具集，打通模型开发、训练、压缩、部署全流程，辅助其它高层视觉任务组网并提升模型效果，助力开发者训练更好的图像分类模型和应用落地。\n",
    "* **PaddleDetection**：飞桨目标检测套件，旨在帮助开发者更快更好地完成检测模型的训练、精度速度优化到部署全流程。PaddleDetection以模块化的设计实现了多种主流目标检测算法，并且提供了丰富的数据增强、网络组件、损失函数等模块，集成了模型压缩和跨平台高性能部署能力。目前基于PaddleDetection已经完成落地的项目涉及工业质检、遥感图像检测、无人巡检等多个领域。\n",
    "* **PaddleSeg**：飞桨图像分割套件，覆盖了DeepLabv3+/OCRNet/BiseNetv2/Fast-SCNN等高精度和轻量级等不同方向的大量高质量分割模型。通过模块化的设计，提供了配置化驱动和API调用等两种应用方式，帮助开发者更便捷地完成从训练到部署的全流程图像分割应用。\n",
    "* **PaddleOCR：** 飞桨文字识别套件，旨在打造一套丰富、领先、且实用的OCR工具库，开源了基于PPOCR实用的超轻量中英文OCR模型、通用中英文OCR模型，以及德法日韩等多语言OCR模型。并提供上述模型训练方法和多种预测部署方式。同时开源文本风格数据合成工具Style-Text和半自动文本图像标注工具PPOCRLable。\n",
    "* **PaddleGAN**：飞桨生成对抗网络开发套件，集成风格迁移、超分辨率、动漫画生成、图片上色、人脸属性编辑、妆容迁移等SOTA算法，以及预训练模型。并且模块化设计，以便开发者进行二次研发，或是直接使用预训练模型做应用。\n",
    "* **PLSC**：飞桨海量类别分类套件，为用户提供了大规模分类任务从训练到部署的全流程解决方案。提供简洁易用的高层API，通过数行代码即可实现千万类别分类神经网络的训练，并提供快速部署模型的能力。\n",
    "* **ERNIE**：基于持续学习的知识增强语义理解框架实现，内置业界领先的系列ERNIE预训练模型，能够 支持各类NLP算法任务Fine-tuning, 包含保证极速推理的Fast-inference API， 灵活部署的ERNIE Service和轻量化解决方案ERNIE Slim，训练过程所见即所得，支持动态debug，同时方便二次开发。\n",
    "* **ElasticCTR**：飞桨弹性计算推荐套件，可以实现分布式训练CTR预估任务和基于Paddle Serving的在线个性化推荐服务。Paddle Serving服务化部署框架具有良好的易用性、灵活性和高性能，可以提供端到端的CTR训练和部署解决方案。ElasticCTR具备产业实践基础、弹性调度能力、高性能和工业级部署等特点。\n",
    "* **Parakeet**：飞桨语音合成套件，提供了灵活、高效、先进的文本到语音合成工具，帮助开发者更便捷高效地完成语音合成模型的开发和应用。\n",
    "* **PGL**：飞桨图学习框架，业界首个提出通用消息并行传递机制， 支持百亿规模巨图的工业级图学习框架。PGL基于飞桨动态图全新升级，极大提升了易用性，原生支持异构 图，支持分布式图存储及分布式学习算法，覆盖30+图学习模型，包括图语义理解模型ERNIESage等。历经  大量真实工业应用验证，能够灵活、高效地搭建前沿的大规模图学习算法。\n",
    "* **PARL**：飞桨深度强化学习框架，在2018， 2019， 2020夺得强化学习挑战赛三连冠。具有高灵活性、可扩展性和高性能的特点。实现了十余种主流强化学习算法的示例，覆盖了从单智能体到多智能体，离散决策到连续控制不同领域的强化学习算法支持。基于GRPC机制实现数千台CPU和GPU的高性能并行。\n",
    "* **Paddle Quantum**：量桨，飞桨量子机器学习框架，提供量子优化、量子化学等前沿应用工具集，常用量子电路模型，以及丰富的量子机器学习案例，帮助开发者便捷地搭建量子神经网络，开发量子人工智能应用。\n",
    "* **PaddleHelix**：飞桨螺旋桨生物计算框架，开放了赋能疫苗设计，新药研发，精准医疗的AI能力。在疫苗设计上，PaddleHelix的LinearRNA系列算法相比传统方法在RNA折叠上提升了几百上千倍的效率； 在新药研发上，PaddleHelix提供了基于大规模数据预训练的分子表示，助力分子性质预测，药物筛选，药物设计等领域；在精准医疗上，PaddleHelix提供了利用组学信息精准定位药物，提升治愈率的高性能模型。\n",
    "\n",
    "**模型库**：包含了各领域丰富的开源模型代码，不仅可以直接运行模型，还可以根据应用场景的需要修改原始模型代码，得到全新的模型实现。\n",
    "\n",
    "> 比较三种类型的模型资源，PaddleHub的使用最为简易，模型库的可定制性最强且覆盖领域最广泛。读者可以参考“PaddleHub->各领域的开发套件->模型库”的顺序寻找需要的模型资源，在此基础上根据业务需求进行优化，即可达到事半功倍的效果。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## 飞桨技术优势\n",
    "\n",
    "与其他深度学习框架相比，飞桨具有如下四大领先优势，如 **图3** 所示。\n",
    "\n",
    "<center><img src=\"https://ai-studio-static-online.cdn.bcebos.com/b50da6f7409a4d1fa7799541f215fa2c5a6439455500472b8184797785907bfc\" width=\"900\" hegiht=\"\" ></center>\n",
    "<center><br>图3：飞桨领先的四大技术优势</br></center>\n",
    "<br></br>\n",
    "\n",
    "* **开发便捷的深度学习框架**：飞桨兼顾便于性能优化的静态图和易于调试的动态图两种组网编程范式，默认采用命令式编程范式，并实现动静统一，开发者使用飞桨可以实现动态图编程调试，一行代码转静态图训练部署。同时还提供低代码开发的高层API，并且高层API和基础API采用一体化设计，两者可以互相配合使用，做到高低融合，确保用户可以同时享受开发的便捷性和灵活性。\n",
    "* **超大规模的深度学习模型训练技术**：支持千亿特征、万亿参数的高速并行训练；支持业内首个通用参数服务器架构。\n",
    "* **多端多平台部署的高性能推理引擎**：即训即用，支持端边云多硬件和多操作系统。\n",
    "* **产业级开源模型库**：算法总数200+个，包含领先的预训练模型、国际竞赛冠军模型等，助力产业应用。\n",
    "<br></br>\n",
    "以其中两项为例，展开说明。\n",
    "\n",
    "### 多领域产业级模型达到业界领先水平\n",
    "\n",
    "大量工业实践任务的模型并不需要从头编写，而是在相对标准化的模型基础上进行参数调整和优化。飞桨支持的多领域产业级模型开源开放，且多数模型的效果达到业界领先水平，在国际竞赛中夺得20多项第一，如 **图4** 所示。\n",
    "<br></br>\n",
    "<center><img src=\"https://ai-studio-static-online.cdn.bcebos.com/730ed282e5ae4f179bb55cd591b9d8e5a5eba79b2fa246bb962f590158fa11b8\" width=\"1000\" hegiht=\"\" ></center>\n",
    "<center><br>图4：飞桨各领域模型在国际竞赛中荣获多个第一</br></center>\n",
    "<br></br>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "### 支持多端多平台的部署，适配多种类型硬件芯片\n",
    "\n",
    "随着深度学习技术在行业的广泛应用，对不同类型硬件设备、不同部署模型、不同操作系统、不同深度学习框架的适配需求涌现，飞桨的适配情况如 **图5** 所示。\n",
    "\n",
    "<center><img src=\"https://ai-studio-static-online.cdn.bcebos.com/4ccc037b91a6439f883174af201e908a247c4cc7c91d41b58f60787475bd4c84\" width=\"900\" hegiht=\"\" ></center>\n",
    "<center><br>图5：飞桨对周边产品的适配情况</br></center>\n",
    "<br></br>\n",
    "\n",
    "训练好的模型需要无缝集成到各种类型的硬件芯片中，如机房服务器、摄像头芯片等。在中美贸易战时日趋紧张的情况下，训练框架对国产芯片的支持显得尤其重要。飞桨走在了业界前列，截止2020年12月，飞桨已经适配了（或正在适配）的芯片/IP数量达到30种，其中国产的数量达到17种；覆盖了20家厂商，其中国产厂商12家。\n",
    "<br></br>\n",
    "<center><img src=\"https://ai-studio-static-online.cdn.bcebos.com/6f44c12d5f6f4cf38ec24ac36ee3ac96b979b449c6e34305af550fd5ca6b7402\" width=\"700\" hegiht=\"\" ></center>\n",
    "<center><br>图6：飞桨软硬一体深度优化，硬件生态“芯芯向荣”</br></center>\n",
    "<br></br>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## 飞桨在各行业的应用案例\n",
    "\n",
    "飞桨在各行业的广泛应用，不但让人们的日常生活变得更加简单和便捷，对企业而言，飞桨还助力产品研发过程更加科学，极大提升了产品性能，节约了大量的人工耗时成本。\n",
    "\n",
    "###  飞桨联手百度地图，出行时间智能预估准确率从81%提升到86%\n",
    "\n",
    "在百度，搜索、信息流、输入法、地图等移动互联网产品中大量使用飞桨做深度学习任务。在百度地图，应用飞桨后提升了产品的部署和预测性能，支撑天级别的百亿次调用。完成了天级别的百亿级数据训练，用户出行时间预估的准确率从81%提升到86%，如 **图7** 所示。\n",
    "<br></br>\n",
    "<center><img src=\"https://ai-studio-static-online.cdn.bcebos.com/bccc82ab83084b02b4ed954abad249c41b5710e9c90e451f900e93380ec88576\" width=\"900\" hegiht=\"\" ></center>\n",
    "<center><br>图7：百度地图出行时间智能预估应用</br></center>\n",
    "<br></br>\n",
    "\n",
    "### 飞桨联手南方电网，电力巡检迈向“无人时代”\n",
    "\n",
    "飞桨与南方电网合作，采用机器人代替人工进行变电站仪表的巡检任务，如 **图8** 所示。由于南方电网的变电站数量众多，日常巡检常态化，而人工巡检工作内容单调，人力投入大，巡检效率低。集成了基于飞桨研发的视觉识别能力的机器人，识别表数值的准确率高达99.01%。在本次合作中，飞桨提供了端到端的开发套件支撑需求的快速实现，降低了企业对人工智能领域人才的依赖。\n",
    "<br></br>\n",
    "<center><img src=\"https://ai-studio-static-online.cdn.bcebos.com/2e6dfe68675944afb625452fcafad63533783f29d8774579b692b1d39953381e\" width=\"600\" hegiht=\"\" ></center>\n",
    "<center><br>图8：南方电网电力智能巡检应用</br></center>\n",
    "<br></br>\n",
    "\n",
    "------\n",
    "说明：\n",
    "\n",
    "以上数据为内部测试结果，实际结果可能受环境影响而在一定范围内变化，仅供参考。如果您想了解更多、更新的飞桨工业实践案例、开发者案例或产研合作案例，可以登录[飞桨官网](https://www.paddlepaddle.org.cn/customercase)。\n",
    "\n",
    "------\n",
    "\n",
    "## 飞桨快速安装\n",
    "\n",
    "进入实践之前，请先安装飞桨。飞桨提供了图形化的安装指导，操作简单，详细步骤请参考 [飞桨官网 -> 快速安装](http://www.paddlepaddle.org.cn/install/quick)。\n",
    "\n",
    "进入页面后，可按照提示进行安装，如 **图9** 所示。举例来说，笔者选择在笔记本电脑上安装飞桨，那么选择（windows系统+pip+Python3+CPU版本）的配置组合。其中windows系统和CPU版本是个人笔记本的软硬件配置；Python3是需要事先安装好的Python版本（Python有2和3两个主流版本，两者的API接口不兼容）；pip是命令行安装的指令。\n",
    "<br></br>\n",
    "<center><img src=\"https://ai-studio-static-online.cdn.bcebos.com/447ab6663a00432e84e2330f28fc171a4a5d5d943b7e4c5296e64ed66abfa929\" width=\"700\" hegiht=\"\" ></center>\n",
    "<center><br>图9：飞桨的安装页面示意图</br></center>\n",
    "<br></br>\n",
    "\n",
    "## 联系我们\n",
    "  \n",
    "- 飞桨官方网站： [https://www.paddlepaddle.org.cn/](https://www.paddlepaddle.org.cn/)\n",
    "- 飞桨GitHub： [https://github.com/paddlepaddle](https://github.com/paddlepaddle)\n",
    "- 飞桨微信公众号： 飞桨PaddlePaddle\n",
    "- 飞桨官方QQ群： 1108045677"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "### 作业1-5\n",
    "\n",
    "1. 在[AI Studio](http://aistudio.baidu.com/)上注册用户，查阅本课程的案例库，找到房价预测的案例。\n",
    "1. 在飞桨官网上查看安装手册，在本机或服务器上安装PaddlePaddle库，并在GitHub上将[本课程的案例库](http://github.com/PaddlePaddle/tutorials)下载到本地PC或服务器。\n",
    "1. 加入飞桨官方QQ群（1108045677），将安装和运行案例时的问题反馈到群中，获得答案。\n",
    "\n",
    "------\n",
    "**运行环境要求：**\n",
    "\n",
    "本地已经安装Python、PaddlePaddle、Jupyter。\n",
    "\n",
    "------"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "PaddlePaddle 2.0.0b0 (Python 3.5)",
   "language": "python",
   "name": "py35-paddle1.2.0"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
